SQL Serverのデータ変更時の基本動作
from SQL Serverのバックアップ・リストア仕様
1. クライアントからSQL Serverにデータ更新をかける
2. 更新内容をログ先行書き込みする
3. メモリ上のデータを更新(ダーディページ発生)
論理書き込みと呼ばれる
4. クライアントからは処理完了に見える
ログに書き込みが完了したらユーザーからは完了と見えるのがポイント
5. チェックポイント発生時にダーティページをデータファイル(mdfなど)に更新
物理書き込みと呼ばれる
チェックポイントはいつ発生する?
一定間隔
復旧間隔という設定がある
CHECKPOINTコマンドで直接発生させられる
データの読み込み
1. 基本的に発行されたクエリの分だけ読み込む
2. プラス、先行読み取りという操作の分も読み込まれる
データの書き込み
1. 論理書き込み
データ更新が起こると、まずログ先行書き込みが行われる
次にバッファキャッシュのデータが更新される
2. 物理書き込み
「任意のタイミング」で更新されたバッファキャッシュがデータファイルに書き込まれる
任意のタイミングはチェックポイントと呼ばれる
ダーティページ
論理書き込みが終わっているが、物理書き込みが終わっていないバッファキャッシュ上のデータ
バッファキャッシュの内容を定期的に確認(チェックポイントプロセス)し、ダーティページが見つかると物理書き込みを行う
物理書き込みの方法は以下のようなものがある
集中書き込み
レイジー書き込み
code:ㅤ
+ユーザー--------+ クエリ +SQL Server---+ +データファイル-+
| UPDATE table1 | 実行 | バッファ | フラッシュ | |
| set c = 'A' | ------> | キャッシュ | -------> | |
| WHERE c = 'B';| | +table1.c-+ | | +table1.c-+ |
+---------------+ 論理 | | B -> A | | 物理 | | B -> A | |
書き込み | +---------+ | 書き込み | +---------+ |
+-------------+ +-------------+
参考
Sql server のバックアップとリストアの基礎 P8